Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## rdlc.rdl
Class Declaration_Indirect

    java.lang.Object
      rdlc.rdl.Declaration_Named
          rdlc.rdl.Declaration_Indirect

All Implemented Interfaces:
  Declaration, Expression

Direct Known Subclasses:
  ChannelModel_Indirect, DynRoot_Indirect, Message_Indirect

    public abstract class Declaration_Indirect

extends Declaration_Named

Simple helper class from which all of the other indirect declarations inherit. This class takes care of storing the identifier and handling typing, leaving the actual indirect class to simply proxy the accessor methods specific to that RDL type.

Version:
  $Revision: 1.16 $
Author:
  Greg Gibeling

Nested Class Summary

Nested classes/interfaces inherited from interface rdlc.rdl.Expression
`Expression.Phase`

Field Summary
`protected RawStaticIdentifier` | `rawTargetID` The raw static identifier which names the target.
`protected Declaration` | `target` The target declaration named in this one.

Fields inherited from class rdlc.rdl.Declaration_Named
`iName, namespace, rawStaticID`

Constructor Summary
`Declaration_Indirect(Namespace _namespace)`
`Declaration_Indirect(RawStaticIdentifier _rawTargetID)` Base constructor, records the raw static identifier of the declaration named by this one.

Method Summary
`Declaration` | `getBase()` Simple accessor.
`java.lang.String` | `getLambdaName()` Simple accessor.
`Declaration` | `getNamedBase()` Simple accessor.
`void` | `getRequirements(CatalogSet<Identifier<Declaration>> requirements)` For indirect declarations, there is an additional requirement, namely the target of the indirection.
`Declaration` | `getTarget()` Simple accessor.
`Declaration` | `getType()` Simple accessor.
`void` | `resolve(java.util.HashSet<Declaration> markSet, Log errorLog, Expression.Phase phase)` Resolves the static identifier given as part of this indirect declaration.
`boolean` | `typeMatch(Expression e)` This method is the core of the named type system in RDL.

Methods inherited from class rdlc.rdl.Declaration_Named
`getIdentifier, getRawStaticID, setNamespace, setRawStaticID, toString`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### target

    protected Declaration target

  The target declaration named in this one.

### rawTargetID

    protected RawStaticIdentifier rawTargetID

  The raw static identifier which names the target.

Constructor Detail

### Declaration_Indirect

    public Declaration_Indirect(RawStaticIdentifier _rawTargetID)

  Base constructor, records the raw static identifier of the declaration named by this one.

  Parameters:
    `_rawTargetID` - The raw static identifier of the declaration named by this one.

### Declaration_Indirect

    public Declaration_Indirect(Namespace _namespace)

See Also:
  `Declaration_Named.Declaration_Named(Namespace)`

Method Detail

### resolve

    public void resolve(java.util.HashSet<Declaration> markSet,
                        Log errorLog,
                        Expression.Phase phase)

  Resolves the static identifier given as part of this indirect declaration.

  Specified by:
    `resolve` in interface `Expression`
  Overrides:
    `resolve` in class `Declaration_Named`
  Parameters:
    `markSet` - Complete hash set of declarations on which the caller depends (including itself).
    `errorLog` - Log of errors to be reported to the user.
    `phase` - The phase of resolution to perform.
  See Also:
    `Expression.resolve(HashSet, Log, Phase)`, `Expression.resolve(HashSet, Log, Phase)`

### typeMatch

    public boolean typeMatch(Expression e)

  This method is the core of the named type system in RDL. It enforces the edict that two named types match only if one is base of the other in the indirection hierarchy.

  Parameters:
    `e` - The expression to check this one against.
  Returns:
    `true` if these two expressions match in type.
  See Also:
    `Expression.typeMatch(Expression)`

### getBase

    public Declaration getBase()

  Simple accessor.

  Specified by:
    `getBase` in interface `Declaration`
  Overrides:
    `getBase` in class `Declaration_Named`
  Returns:
    The base of the target of this indirect declaration.
  See Also:
    `Declaration.getBase()`

### getNamedBase

    public Declaration getNamedBase()

  Simple accessor.

  Specified by:
    `getNamedBase` in interface `Declaration`
  Overrides:
    `getNamedBase` in class `Declaration_Named`
  Returns:
    The named base of the target, or this declaration ir it is named and the target has no named base.
  See Also:
    `Declaration.getNamedBase()`

### getLambdaName

    public java.lang.String getLambdaName()

  Simple accessor.

  Returns:
    The lambda name of the target of this indirect declaration.
  See Also:
    `Declaration.getLambdaName()`

### getType

    public Declaration getType()

  Simple accessor. A key part of the named type system.

  Specified by:
    `getType` in interface `Declaration`
  Overrides:
    `getType` in class `Declaration_Named`
  Returns:
    This declaration if it is named, and it's target's type otherwise.
  See Also:
    `Declaration.getType()`

### getTarget

    public Declaration getTarget()

  Simple accessor.

  Returns:
    The target of this indirect declaration.

### getRequirements

    public void getRequirements(CatalogSet<Identifier<Declaration>> requirements)

  For indirect declarations, there is an additional requirement, namely the target of the indirection.

  Specified by:
    `getRequirements` in interface `Expression`
  Overrides:
    `getRequirements` in class `Declaration_Named`
  Parameters:
    `requirements` - A list to which this will add the declarations upon which this one relies.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD